﻿using System;

namespace FactoryMethodPatterDemo
{
    /// <summary>
    /// 工厂模式是由简单工厂演化而来，其目的是为了解决简单工厂破坏了软件设计开闭原则的
    /// 定义一个用于创建对象的接口，让子类决定实例化哪个类。工厂方法使一个类的实例化延迟到其子类
    /// 工厂方法模式：明显我们只是让客户端与工厂相互，而不是与产品关联。同时具体产品的产品是由具体工厂实例化出来的
    /// 工厂方法模式几大角色： 抽象工厂(工厂接口)、具体工厂、抽象产品、具体产品、客户端
    /// </summary>
    class Client
    {
        static void Main(string[] args)
        {
            IFactory factory = new SubFactory();
            var operation = factory.CreateOperation();
            operation.NumberA = 2.500d;
            operation.NumberB = 2.000d;
            var result = operation.GetResult();
            Console.WriteLine("当前是减法");
            Console.WriteLine("输入2个数是:{0}及{1}结果是{2}", operation.NumberA, operation.NumberB, result);

            Console.ReadKey();
        }
    }
}